package binaryTree;

class Class530 {
//    int maxDiameter=0;
//    public int diameterOfBinaryTree(TreeNode root) {
//        maxDepth(root);
//        return  maxDiameter;
//    }
//    int maxDepth(TreeNode root){
//        if (root==null){
//            return  0;
//        }
//        int leftDepth = maxDepth(root.left);
//        int rightDepth = maxDepth(root.right);
//        int myDiameter = leftDepth + rightDepth;
//        maxDiameter = Math.max(maxDiameter, myDiameter);
//        return  1+Math.max(leftDepth,rightDepth);
//    }
//    int mini=Integer.MAX_VALUE;
//    public int getMinimumDifference(TreeNode root) {
//        getMini(root);
//        return  mini;
//    }
//    public  int getMini(TreeNode root){
//        if (root==null){
//            return 0;
//        }
//        int left = getMini(root.left);
//        int right = getMini(root.right);
//        mini=Math.min(Math.abs(root.left.val-root.right.val),mini);
//        return  Math.abs(root.left.val-root.right.val);
//    }

    TreeNode cur;
    int res=Integer.MAX_VALUE;
    public int getMinimumDifference(TreeNode root) {
        getMini(root);
        return  res;
    }

    public  int getMini(TreeNode root){
        if (root==null){
            return 0;
        }
        getMini(root.left);
        if (cur==null){
            cur=root;
        }
        else{
            res=Math.min(res,Math.abs(root.val-cur.val));
            cur=root;
        }
         getMini(root.right);
        return  res;
    }

    public static void main(String[] args) {
        Class530 class530 = new Class530();
//        TreeNode treeNode1 = new TreeNode(1);
//        TreeNode treeNode2 = new TreeNode(2);
//        TreeNode treeNode3 = new TreeNode(3);
//        treeNode1.right=treeNode3;
//        treeNode3.left=treeNode2;

        TreeNode treeNode1 = new TreeNode(1);
        TreeNode treeNode2 = new TreeNode(0);
        TreeNode treeNode3 = new TreeNode(48);
        TreeNode treeNode4 = new TreeNode(12);
        TreeNode treeNode5 = new TreeNode(49);
        treeNode1.left=treeNode2;
        treeNode1.right=treeNode3;
        treeNode3.left=treeNode4;
        treeNode3.right=treeNode5;
        int minimumDifference = class530.getMinimumDifference(treeNode1);
        System.out.println(minimumDifference);
    }





}
